Cursor-based resizing for copied image portions

ABSTRACT

A copied image portion, such as an extracted image object, may be rendered together with (e.g., within) a cursor control element. Simply by resizing the cursor control element, the copied, rendered image portion may also be resized accordingly. For example, as the cursor control element is enlarged or reduced, the copied, rendered image portion within the cursor control element is also enlarged or reduced. In this way, a user may easily preview and designate a desired size of the copied, rendered image portion, and then simply place the cursor control element at a desired destination location (in the same or different image) to complete the desired pasting operation, and with a desired size of the pasted image portion.

TECHNICAL FIELD

This description relates to image editing software for digital images.

BACKGROUND

Digital image editing refers generally to the use of computer softwareand associated hardware to access one or more digital image files, andperform modifications on the image(s) of the digital image file(s). Inmany cases, digital image editing techniques are designed to incorporatea modification within an original image, to produce a modified image.

For example, it is often desirable to extract and copy an image from asource location (e.g., to identify an image portion from within animage), and then paste the extracted, copied image portion to a targetor destination location. For example, the copied image portion may bepasted to a different location within the image, or to a destinationlocation within a different image.

In many cases, the copied image portion has an original size, and it isdesirable to paste the copied image portion with a size different thanthe original size. For example, when copying/pasting between differentimage files, the different images may have different sizes, so that anappropriate size of the image portion within the source image isinappropriate or undesirable within the destination image.

Conventional approaches, however, do not provide sufficiently fast orconvenient resizing techniques for copying/pasting image portions. Forexample, conventional techniques may require an undesirably large numberof keystrokes or other operations on the part of a user. In otherexamples, conventional techniques may require the user to estimate adesired size of a copied/pasted image portion, and then re-execute thecopying/pasting operations when such estimates are incorrect.

SUMMARY

According to one general aspect, a computer program product is tangiblyembodied on a non-transitory computer-readable storage medium andincludes instructions that, when executed by at least one computingdevice, are configured to cause the at least one computing device toreceive a request to copy an image portion of a digital image renderedin a graphical user interface, the copied image portion having a firstimage portion size, and render a preview of the copied image portion inconjunction with at least one cursor control element of a cursor. Theinstructions, when executed, are further configured to cause the atleast one computing device to move the preview, in response to amovement of the cursor, to a destination location, re-size the preview,in response to a size change event of the at least one cursor controlelement, to obtain a re-sized preview; and paste the copied imageportion at the destination location as a pasted image portion, andhaving a second image portion size determined from the re-sized preview.

According to another general aspect, a computer-implemented methodincludes copying an image portion of a digital image rendered in agraphical user interface, the copied image portion having a first imageportion size, and rendering a preview of the copied image portion inconjunction with at least one cursor control element of a cursor. Themethod further includes moving the preview to a destination locationspecified by the cursor, re-sizing the preview, in response to a sizechange event of the at least one cursor control element, to obtain are-sized preview, and pasting the copied image portion at thedestination location as a pasted image portion, and having a secondimage portion size determined from the re-sized preview.

According to another general aspect, a computer program product istangibly embodied on a non-transitory computer-readable storage mediumand includes instructions that, when executed by at least one computingdevice, are configured to cause the at least one computing device tocopy an image portion of a digital image, and generate a preview of thecopied image portion that is overlaid on the digital image and includedwithin at least one cursor control element. The instructions, whenexecuted, are further configured to cause the at least one computingdevice to receive a size change request for the preview, and change asize of the preview, based on the size change request, to thereby obtaina re-sized preview. The instructions, when executed, are furtherconfigured to cause the at least one computing device to move the atleast one cursor control element to a destination location, and pastethe copied image portion at the destination location with a sizedetermined from the re-sized preview.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system for cursor-based resizing forcopied image portions.

FIG. 2 is a flowchart illustrating example operations of the system ofFIG. 1.

FIG. 3 illustrates a first screenshot of an example implementation ofthe system of FIG. 1.

FIG. 4 illustrates a second screenshot of an example implementation ofthe system of FIG. 1.

FIG. 5 is a first flowchart illustrating more detailed exampleoperations of the flowchart of FIG. 2.

FIG. 6 is a second flowchart illustrating more detailed exampleoperations of the flowchart of FIG. 2.

DETAILED DESCRIPTION

Digital image editing is a technical field that enables bothprofessional and amateur users to modify and manipulate digital images.This document describes systems and techniques that provide for digitalimage editing using image editing software. Such systems and techniquesovercome technical challenges of previous systems and techniques, andimprove the process(es) to perform such automated processing.

For example, from within an application, an image portion may beidentified and copied from within an image. The copied image portion maybe rendered together with (e.g., within) a cursor control element.Simply by resizing the cursor control element, the copied, renderedimage portion may also be resized accordingly, e.g., within the cursorcontrol element. For example, as the cursor control element is enlargedor reduced, the copied, rendered image portion within the cursor controlelement is also enlarged or reduced. In this way, a user may easilypreview and designate a desired size of the copied, rendered imageportion, and then simply place the cursor control element at a desireddestination location (in the same or different image) to complete thedesired pasting operation, and with a desired size of the pasted imageportion.

In some implementations, the image portion may be an image object fromwithin the image. For example, an image object might be any discreteitem pictured within the image, such as a ball, a person, a car, aflower, or any other pictured item. In these implementations, theextracted image object may easily be resized and pasted. In particular,for example, the extracted image object may be resized after the imageobject extraction, and before the pasting operation is performed.Further, the extracted image object is rendered for previewing prior tothe pasting operation, and rendered at a position of the movable cursorcontrol element. Therefore, a user may easily position the extractedimage object at a desired destination location, and select a desiredsize to be pasted, in context at that location.

In many cases, a user wishes to copy and paste an image portion, such asan image object, from a first digital image to a second digital image,where the first and second digital images are different sizes. When thecopied image portion is rendered in conjunction with the movable cursorcontrol element, the user may easily position the copied, rendered imageportion at a desired location within the second digital image. Then, theuser may select the desired size prior to completing the pastingoperation.

Further, even within a single digital image, an image object may beresized in order to obtain a desired effect. For example, an imageobject may be reduced in size, and then positioned to create an illusionof multiple objects in three dimensions (e.g., objects that appearsmaller in the distance).

Additionally, the systems and techniques described herein advantageouslyimprove existing technology areas. For example, as described,computer-based image editing is improved. Further, the systems andtechniques may be used for a more automated and more efficient andfaster approach when applied to the production of both digital and paperdocuments with included images, as well as when applied to theproduction of video files.

FIG. 1 is a block diagram of a system 100 for cursor-based resizing forcopied image portions. The system 100 includes a computing device 102having at least one memory 104, at least one processor 106 and at leastone application 108. The computing device 102 may communicate with oneor more other computing devices over a network 110. The computing device102 may be implemented as a server, a desktop computer, a laptopcomputer, a mobile device such as a tablet device or mobile phonedevice, as well as other types of computing devices. Although a singlecomputing device 102 is illustrated, the computing device 102 may berepresentative of multiple computing devices in communication with oneanother, such as multiple servers in communication with one anotherbeing utilized to perform various functions over a network.

The at least one processor 106 may represent two or more processors onthe computing device 102 executing in parallel, and utilizingcorresponding instructions stored using the at least one memory 104. Theat least one memory 104 represents at least one non-transitorycomputer-readable storage medium. Thus, similarly, the at least onememory 104 may represent one or more different types of memory utilizedby the computing device 102. In addition to storing instructions, whichallow the at least one processor 106 to implement the application 108and its various components, the at least one memory 104 may be used tostore data.

The network 110 may be implemented as the Internet, but may assumeother, different configurations. For example, the network 110 mayinclude a wide area network (WAN), a local area network (LAN), awireless network, an intranet, combinations of these networks, and othernetworks. Of course, although the network 110 is illustrated as a singlenetwork, the network 110 may be implemented as including multipledifferent networks.

The application 108 may be accessed directly by a user of the computingdevice 102, at the computing device 102. In other implementations, theapplication 108 may be running on the computing device 102 as acomponent of a cloud network where a user accesses the application 108from another computing device 112 (referred to herein as a user device112) over a network, such as the network 110. In one implementation, theapplication 108 may be a digital image editing application. In otherimplementations, the application 108 may represent another type ofapplication, such as a document creation or viewer application, thathas, or utilizes, image editing capabilities.

The application 108 may be a standalone application that runs on thecomputing device 102. Alternatively, the application 108 may be anapplication that runs in another application, such as a browserapplication.

In FIG. 1, the application 108 is illustrated as including a display 114that provides a graphical user interface (GUI) 116. As referenced above,the application 108 may represent an image editing application, and theGUI 116 may represent a corresponding user interface. As also referencedabove, the application 108 may include a browser application, so thatthe GUI 116 represents at least a portion of a browser window.

In the example of FIG. 1, the GUI 116 is illustrated as including adigital image 117. It will be appreciated that the digital image 117 isintended to represent virtually any suitable type of digital image thatmay be rendered or displayed within the GUI 116. For example, thedigital image 117 may be a single digital image, or it may represent oneor more image frames of a larger video file. As such, it will beappreciated that the digital image 117 may be included or stored withinany corresponding, suitable type of digital image file and associatedformat, such as a .jpg, .gif, or .mp4 file, to name a few non-limitingexamples. Further, although the digital image 117 is illustrated byitself for the sake of clarity and simplicity, it will be appreciatedthat the digital image 117 may represent a digital image embedded orotherwise included within a larger file, such as a document or othertype of text file.

In FIG. 1, a user input device 118 represents any suitable human and/ormachine techniques for interacting with the application 108. By way ofnon-limiting example, the user input device 118 may represent a mouse,stylus, or any hardware element configured for wired or wirelesscommunications with the user device 112 and/or the display 114. The userinput device 118 may also represent a touch screen of the display 114,or any gesture-based control system for interacting with the display 114and the GUI 116.

As referenced above, and in the examples provided herein, the user inputdevice 118 is configured to provide a cursor in conjunction withcontrolling operations of the GUI 116, and the application 108. In thisregard, it will be appreciated that such a cursor may be generallyunderstood to represent any of a number of known or future types ofindicators that may be positioned within the GUI 116 by virtue ofcorresponding movements or other operations of the user input device118, to thereby designate a spatial position within the GUI 116. Such acursor is therefore capable of identifying a position within the GUI 116at which a subsequent action of the user, via the user input device 118,or otherwise, will take effect.

In the simplified example of FIG. 1, the digital image 117 isillustrated as including an image portion 122 that is illustrated as asoccer ball. As shown, in the example of FIG. 1, a cursor-based resizecontroller 120 may be configured to copy the image portion 122 forrendering in conjunction with a cursor control element 124, as a preview126 that visually reproduces the copied image portion 122. As referencedabove and described in detail below, the cursor control element 124 maybe resizable, e.g., through the use of the user input device 118, sothat the preview 126 is also resized in conjunction with any resizing ofthe cursor control element 124. Accordingly, a user of the user inputdevice 118 may easily preview the copied image portion 122, and therebydetermine a desired size and location for a pasted image portion 128.

Thus, the cursor control element 124 should be understood broadly torefer to any element that may be associated with controlling operationsof at least one cursor controlled by the user input device 118 withrespect to the GUI 116. For example, in some implementations, the cursorcontrol element 124 may itself, partially or completely, represent thecursor being controlled by the user input device 118. In other exampleimplementations, such as described and illustrated below with respect toFIGS. 3 and 4, the cursor control element 124 may be implemented using aslider bar or other sizing control element that is selectable orconfigurable by the user of the user input device 118.

In order to provide the above features and advantages, as well as manyother features and advantages described in detail, below, thecursor-based resize controller 120 may utilize a number of available andexisting resources, both within and external to the application 108. Forexample, in FIG. 1, the application 108 is illustrated as including acopy controller 130, which generally represents an existing copyfunctionality of the application 108. For example, the copy controller130 may represent a portion of the application 108 configured toimplement copying operations of images, image portions, text, or otherdata normally used in the context of the application 108.

Similarly, a rendering engine 132 generally represents a renderingfunctionality of the application 108. As such, the rendering engine 132may be understood to be used in rendering the digital image 117, and anyother normal rendering operations that may be performed by theapplication 108.

Further, a paste controller 134 illustrates one or more modules andassociated functionality for pasting images or other data copied by thecopy controller 130. Thus, as with the copy controller 130 and therendering engine 132, various known features and functions of the pastecontroller 134 would be apparent to one of skill in the art, and are nototherwise described here in detail, except as may be necessary orhelpful in understanding operations of the cursor-based resizecontroller 120. For example, with respect to the copy controller 130 andthe paste controller 134, it will be appreciated that any existingkeyboard shortcut techniques for copying/pasting data may be used, aswell as any input features that may be particular to a type of the userinput device 118 being used (e.g., a ‘fight-click’ of a computer mouse).

In the example of FIG. 1, the copy controller 130, the rendering engine132, and the paste controller 134 are illustrated as being implementedusing the application 108. In various implementations, however, it willbe appreciated that these and other components and associatedfunctionalities may be partially or completely executed external to theapplication 108.

For example, these and related functionalities may be performed using anoperating system of the computing device 102, and/or an operating systemof the user device 112. For example, a clipboard 136 may represent atemporary memory that may be configured for use across a plurality ofapplications or application instances, including the application 108.Thus, image data or other data copied by the copy controller 130 may bestored using the clipboard 136, and ultimately pasted therefrom by thepaste controller 134. In other examples, the rendering engine 132 may bepartially or completely implemented using resources of the GUI 116, suchas when the GUI 116 represents a browser application.

Further in FIG. 1, an object extractor 138 represents a resourceavailable to the application 108 and configured to extract the imageportion 122 as a discrete item, element, or other object from within thedigital image 117. In this regard, more detailed example implementationsof operations of the object extractor 136 in the context of the system100 of FIG. 1 are provided below, e.g., with respect to the screenshotsof FIGS. 3 and 4.

In general, however, it will be appreciated that the object extractor136 is configured to consider any background image data that may existwithin the digital image 117 with respect to the soccer ball 122, wheresuch background imagery is not pictured in FIG. 1, for the sake ofsimplicity and clarity. By extracting the soccer ball 122 as a discreteobject from within any such background imagery, the preview 126 may berendered as a resizable version of the extracted image object, tothereby facilitate a desired pasting of the image object as the pastedimage object 128. Such copying, previewing, resizing, and pasting may beprovided, without regard for any background imagery that may exist ateither the source location of the soccer ball 122, or at the destinationlocation of the pasted soccer ball 128 (and regardless of whether thedestination location is within the digital image 117, or another digitalimage).

Further in FIG. 1, a resizing algorithm 140 represents one or more knowntechniques for performing proportional resizing of image data. That is,as illustrated in the simplified example of FIG. 1, the resizingalgorithm 140 may be configured to assist in reducing or enlarging asize of the, e.g., soccer ball 122, while maintaining internalproportions of the image being resized.

Thus, it will be appreciated that the various modules 130-140 andassociated functionalities illustrated in FIG. 1 are intended merely toprovide an example implementation(s) for purposes of describingoperations of the cursor-based resize controller 120. As referenced, anyother implementations are possible, or would be apparent. In particular,as also referenced, any one or more of the modules 130-140 may beimplemented partially or completely within the application 108, thecomputing device 102, the user device 112, and/or any other suitablehardware/software resources that may be available by way of the network110.

Further, and similarly with respect to the cursor-based resizecontroller 120 itself, it will be appreciated that the cursor-basedresize controller 120 may also be implemented partially or completelywithin the application 108, or may be partially or completely externalto, and accessible by, the application 108. For example, thecursor-based resize controller 120 may be provided as a service that isavailable to, and interfaces with, a plurality of software applicationsrepresented by the application 108.

In operation, the cursor-based resize controller 120 may utilize a copyrequest handler 142 to receive an initial request from a user of theuser input device 118, with respect to the digital image 117. Forexample, as described and illustrated below with respect to FIG. 3, suchan initial request may include a request for activation of thecursor-based resize controller 120. Once activated, a specific copyrequest may be received with respect to a designated image portion.

In this regard, it will be appreciated that the term image portionshould be understood to refer to any specified subset of image data fromwithin the digital image 117. For example, an image portion may thusprefer to a designated subset of pixels, including continuous oradjacent pixels, or a specified area or shape of pixels. For example, auser of the user input device 118 may utilize available functionality ofthe user input device 118 to encircle, highlight, or otherwise designatea particular portion of the digital image 117 for copying, irrespectiveof any included content thereof.

In other example implementations, and as illustrated in the example ofFIG. 1, the copy request handler 142 may utilize the object extractor136 to identify a specific, pictured element of the digital image 117,such as the soccer ball 122. For example, a user of the user inputdevice 118 may designate a center portion of the pictured soccer ball122 (e.g., using a cursor operated by the user input device 118), andthe copy request handler 142 may utilize the object extractor 136 tothereafter extract the image of the soccer ball 122, independently ofany background imagery of the digital image 117 that may exist.

Thus, in the example of FIG. 1, the copy request handler 142 may detecta cursor-based selection event at a position corresponding to a centerof the pictured soccer ball 122, and may pass the appropriate image dataand cursor selection data to the object extractor 138, which may thenproceed to extract the soccer ball 122 as a discrete object from thedigital image 117, whereupon the copy controller 130 may be configuredto store the extracted image object for the soccer ball 122, e.g., usingthe clipboard 138.

Subsequently, a preview generator 144 of the cursor-based resizecontroller 120 may be configured to generate the preview 126, inconjunction with the cursor control element 124. For example, thepreview generator 144 may utilize the rendering engine 132 to render thepreview 126.

In some operations, the preview generator 144 may be configured withvarious default parameters. For example, the preview generator 144 mayinitially generate the preview 126 and the cursor control element 124with a default position defined with respect to the original sourcelocation of the copied image portion. For example, it may occur that thepreview 126 and the cursor control element 124 are initially rendered ata position over the soccer ball 122. In other implementations, thepreview generator 144 may be configured to render the preview 126 andthe cursor control element 124 at any desired, default position, such asat a center of the digital image, or at some location defined withrespect to a visible portion of the digital image 117 within the GUI116. Similarly, the preview generator 144 may be configured to provide adefault size of the preview 126. For example, the preview 126 mayinitially be generated at a size that is equivalent to a size of thecopied image portion 122 itself.

In the example of FIG. 1, as referenced above, it may occur that thecursor control element 124 represents the cursor used by the user inputdevice 118 to designate selection of the soccer ball 122. That is,although a cursor may be implemented as an arrow, pointer, or other typeof indicator of a particular point within the digital image 117, thecursor may also be implemented as a circle, oval, ellipse, or otherappropriate shape, with the rendered preview 126 being illustratedtherein. In such cases, a size of the cursor control element 124 may bedirectly or indirectly controlled by the user input device 118, such aswhen using a separate, selectable sizing control, such as the slider barexample of FIG. 3, below. In other example implementations, the cursormay continue to be implemented and illustrated as an arrow or otherpointer, which may itself then be used to resize a pictured area of thecursor control element 124.

Once the preview 126 and the cursor control element 124 have beenrendered or otherwise provided, a cursor event handler 146 may proceedto detect any subsequent change event received with respect to alocation and/or size of the cursor control element 124. For example, asindicated by the dash lines in FIG. 1, the preview 126 and the cursorcontrol element 124 may be moved from an initial location correspondingto the location of the soccer ball 122, to a final, selected destinationlocation indicated by the pasted soccer ball 128.

As already referenced, the cursor event handler 146 may also beconfigured to detect and respond to size change events associated withthe cursor control element 124. For example, using an appropriate cursorsize control technique received via the user input device 118, thecursor control element 124 may have its size enlarged or reduced.

For example, it may occur that the preview 126 is initially an identicalsize of the image object 122. Thereafter, a size of the cursor controlelement 124 may be reduced, whereupon the cursor event handler 146 maydetect the size reduction request, and provide the copied image object122 from the clipboard 138 to the resizing algorithm 140. In particular,the cursor event handler 146 may provide relevant resizing parameters inconjunction with providing the copied image object from the clipboard138. For example, the cursor event handler 146 may provide a factor bywhich the copied image object is reduced. For example, the cursor eventhandler 146 may detect that the cursor control element 124 has beenreduced by a factor of one half, or by any other detected percentagereduction in size, and may provide this reduction factor to the resizingalgorithm 140.

Once the resized image object has been obtained by way of the resizingalgorithm 140, the preview generator 144 may be configured to render anupdated preview that conforms with, and illustrates, actions of theresizing algorithm 140. Such resizing events may continue, inconjunction with various cursor event detections by the cursor eventhandler 146 and corresponding preview generations by the previewgenerator 144, until the user is satisfied with a current size andlocation of the preview 126. At such time, the user may request areproduction or other pasting of the preview 126 at a specifiedlocation. For example, the paste request handler 148 may detect a pasterequest from the user in conjunction with the illustrated, destinationlocation of the pasted image object 128. At that point, the pasterequest handler 148 may utilize various existing versions and aspects ofthe included paste controller 134 of the application 108, as referencedabove.

FIG. 2 is a flowchart 200 illustrating example operations of the system100 of FIG. 1. In the example of FIG. 2, operations 202-210 areillustrated as separate, sequential operations. It will be appreciated,however, that in various implementations, additional or alternativeoperations or sub-operations may be included, and/or one or moreoperations or sub-operations may be omitted. Further, it may occur thatany two or more of the operations or sub-operations may be executed in apartially or completely overlapping or parallel manner, or a nested,iterative, looped, or branched fashion.

In the example of FIG. 2, a request to copy an image portion of adigital image rendered in a graphical user interface may be received,the copied image portion having a first image portion size (202). Forexample, the copy request handler 142 of the cursor-based resizecontroller 120 may receive a request to copy an image portion of thedigital image 117. As described, the copied image portion may simplyinclude a designated area of the digital image 117, or may include anidentified, discrete element or object extracted from the digital image117 (such as the example of the soccer ball 122 described above withrespect to FIG. 1). Thus, the copied image portion may have a size thatis determined simply by a size selection made by the user whendesignating an area of the digital image 117 to be included in thecopied image portion, or may have a size corresponding to the detected,extracted size of the designated image object that is extracted.

A preview of the copied image portion may be rendered in conjunctionwith at least one cursor control element of a cursor (202). For example,the preview generator 144 may generate the preview 126, in conjunctionwith the cursor control element 124. As referenced above, the cursorcontrol element 124 may, in some implementations, refer to the cursoritself, and/or may refer to one or more graphical user interfaceelements that are rendered and utilized in conjunction with the cursor(e.g., such as the slider bar of FIG. 3, below, or other graphical sizeselection tool). Of course, the system 100 of FIG. 1 may also providetwo or more such cursor control elements, so that the user of the userinput device 118 may select a preferred technique for resizing thepreview 126 from among the available options.

In response to a movement of the cursor, the preview may be moved to adestination location (206). For example, in scenarios in which thecursor control element 124 represents the cursor itself, simply movingthe cursor by way of the user input device 118 will result in movementof the preview 126 to a desired location within the digital image 117.In other implementations, the cursor control element 124 may be separatefrom, but used in conjunction with, the cursor, whereupon the cursor maybe utilized to move the cursor control element 124 and included preview126 to a desired destination location. As referenced above andillustrated below with respect to FIG. 4, the destination location mayexist within a separate digital image from the digital image 117 havingthe source location of the copied image portion 122.

The preview may be resized, in response to a size change event of the atleast one cursor control element, to obtain a resized preview (208). Forexample, the cursor event handler 146 may detect an enlargement orreduction of an edge, parameter, or area of the cursor control element124. As described, such enlargement/reduction may occur directly bymovement of the edge or parameter of the cursor control element towardor away from the preview 126, or may be detected in response to aseparate cursor control element, such as a slider bar or other sizeselection element.

Of course, operations 206, 208 may be performed as many times as desiredto obtain a desired result. For example, the user could resize thepreview 126 multiple times, until a desired size is obtained. Similarly,the user may move the preview 126 to multiple potential destinationlocations, before selecting the final destination location of the imageportion 128. Further, of course, the user may easily select multipledestination locations and/or multiple sizes, within and among one ormore digital images.

Finally with respect to FIG. 2, the copied image portion may be pastedat the destination location as a pasted image portion, and having asecond image portion size determined from the resize preview (210). Forexample, the paste request handler 148 may utilize the paste controller134 to paste the preview 126 from the clipboard 138 to the destinationlocation of the illustrated image object 128. Thus, the size of thepasted image object 128 will be determined from, e.g., will match, theexisting size of the preview 126 at a time that the paste request isreceived.

Similarly, although FIG. 1, using the illustrated dashed arrows,illustrates movement of the preview 126 from the source location of thecopied image object 122 toward the destination location of the pastedimage object 128, it will be understood that, in normal operations, thedesignated destination location will simply correspond to the currentposition or location of the preview 126 at the time of receipt of thepaste request by the paste request handler 148. For example, in FIG. 1,another instance of the pasted image object 128 may be pasted at theillustrated location of the preview 126 with respect to the digitalimage 117, that the resulting pasted image object would be overlaid bythe preview 126 in the simplified example of FIG. 1, and therefore wouldnot be visible within the example of FIG. 1.

FIG. 3 is a screenshot 300 illustrating more detailed exampleimplementations of the system 100 of FIG. 1. As shown, the screenshot300 illustrates the GUI 116 and the digital image 117 of FIG. 1 in moredetail.

In particular, the screenshot 300 includes a checkbox 301 for initiatingoperations of the cursor-based resize controller 120. In other words, atany time during a viewing or editing of the digital image 117, the usermay simply check, or otherwise select, the checkbox 301 to initiate anyof the various operations described herein. Of course, any othersuitable tool selection technique, such as a drop-down menu, may also beutilized.

The screenshot 300 illustrates an image object 302 to be copied, whichcontinues the example of the soccer ball illustrated in FIG. 1. In FIG.3, however, the digital image 117 is illustrated as including abackground 303. In the simplified example of FIG. 3, the background 303illustrates an example pitch or field in which the soccer ball 302 mightbe pictured.

In the example of FIG. 3, a cursor 304 is illustrated as an arrow, and,as shown, the cursor 304 may be used to indicate an approximate centerof the soccer ball 302. Accordingly, when the user invokes a copyfunctionality of the copy request handler 142, represented in FIG. 3 asa copy button 305, the copy request handler 142 may proceed to utilizethe external object extractor 136 to identify and extract the soccerball 302 as an extracted image object. Of course, depending upon aconfiguration of the cursor-based resize controller 120 at a time thatthe checkbox 301 is selected, many other techniques for invoking thecopy request handler 142 may also be used. For example, the copy requestmay be initiated simply in response to a clicking of the cursor 304 atthe center position of the imaged soccer ball 302, or in response to apreconfigured keyboard shortcut, or in response to a “right click”functionality of a mouse corresponding to the user input device 118 ofFIG. 1.

However the referenced copy functionality is invoked and implemented,including use of the object extractor 136 to extract the soccer ball302, the preview generator 144 may proceed to utilize the copied imageobject from the clipboard 138, for rendering as a preview 306. Asreferenced above, the preview generator 144 may be configured to renderthe preview 306 in any one or more of a plurality of available manners.For example, the preview generator 144 may be configured to render thepreview 306 at the original, source location of the image object (soccerball) 302. In other implementations, the preview generator 144 may beconfigured to render the preview 306 at a center of the digital image117, or at some rendered location that is defined as a default withrespect to the source location, the digital image 117, or generallywithin the GUI 116.

As with the default location of the rendered preview 306, the previewgenerator 144 may also be configured to render the preview 306 with adefault size. For example, as illustrated in FIG. 3, the previewgenerator 144 may utilize an output of the object extractor 136 todefine a bounding rectangle 307 that is of sufficient size to completelyenclose the preview 306. In practice, the bounding rectangle 307 may beimplemented using a different shape, and may or may not be renderedvisibly with respect to the preview 306 within the GUI 116.

In addition to defining and otherwise characterizing a size of thepreview 306, the bounding rectangle 307 may also be used to define andcharacterize a size of a corresponding cursor control element 308. Thecursor control element 308 may be implemented using one of a pluralityof available shapes, such as a circle, oval, or ellipse.

Further, in various implementations, the cursor control element 308 mayrepresent a version or instance of the cursor 304. For example, thecursor 304 may be transformed for illustration as the cursor controlelement 308 in response to invocation of the copy functionalityrepresented by the copy button 305. In other implementations, the cursor304 may be transformed for illustration in a shape corresponding to thecursor control element 308 immediately upon selection of the checkbox301. In such implementations, for example, it may occur that the userdesignates the soccer ball 302 as the desired image object to beextracted by enclosing the soccer ball 302 within the thus-transformed(e.g., circular) version of the cursor 304.

Thereafter in FIG. 3, the preview 306 may be resized, using one or moreavailable resizing operations executed in conjunction with operations ofthe cursor event handler 146. For example, the cursor control element308 may selectively be directly enlarged or reduced by the user, such asby highlighting some or all of a parameter or edge of the cursor controlelement 308, and then executing cursor movements away from the center ofthe preview 306 to enlarge the preview 306, or toward the center of thepreview 306 to reduce the size of the preview 306.

As referenced above, the GUI 116 may also be provided with various otherdigital image editing tools and features. For example, as referencedabove, a slider bar 310 may be designated specifically to control and/orreflect size changes made with respect to the preview 306. As shown, anindicator 312 may be rendered to indicate a current position along theslider bar 310, and corresponding to a size of the preview 306.

For example, the indicator 312 may move left or right along the sliderbar 310 in response to the types of changes made with respect to an areaof the cursor control element 308. In additional or alternativeimplementations, the user may directly move the indicator 312 along theslider bar 310, and thereby cause corresponding enlargements orreductions of the cursor control element 308 and the preview 306. Asshown, and as described in detail below with respect to FIGS. 5-6, theslider bar 310 may be used to indicate a size of the preview 306,measured in pixels.

Various other digital image editing techniques and tools may be used.For example, a separate slider bar 314 reflects an opacity percentagedesignated by a selectable indicator 316. For example, the opacityindicator 316 may be set in a manner that allows the user to see throughthe preview 306 to varying degrees. For example, this feature may enablethe user to view a positioning and placement of the preview 306 withrespect to the background 303 of the digital image 117, so that the usermay more easily and more conveniently select a destination locationwithin the digital image 117 and thereby complete corresponding pastingoperations thereof.

As referenced above and also described in more detail below with respectto FIGS. 5 and 6, the cursor event handler 146 may be configured todetect any of the various types of cursor size/location change events,including, when necessary, accessing the clipboard 138 and the resizingalgorithm 140 in order to execute specified resizing operations. Then,once the user has completed all relevant selections with respect to thedesired size and destination location of a preview 306, the user mayproceed to invoke paste functionality of the paste request handler 148and the paste controller 134, represented by a paste button 318 in FIG.3.

Of course, as already described with respect to the copy button 305, thepaste button 318 should be understood generally to represent any knownor future technique for invoking corresponding paste operations, andparameters or characteristics thereof. For example, the paste requesthandler 148 may be configured to implement the paste controller 134 andpaste the preview 306 as a pasted image object 401, as illustrated inFIG. 4. That is, by placing the preview 306 at the illustrateddestination location, and then using a corresponding combination ofshortcut keys, right click mouse selections, the paste button 318, orother appropriate techniques for requesting a paste operation, the pasterequest handler 148 may be invoked and configured to complete thepasting of the preview 306 at the illustrated destination location, toobtain the pasted image object 401.

In the illustrated screenshot 400 of FIG. 4, a second digital image 402is further illustrated to provide an example in which the renderedpreview 306 is pasted with a desired size/location within the separatedigital image 402. For example, as illustrated, a preview 404 may berendered within the second digital image 402, e.g., in response tomovement of the cursor control element 308 from within the digital image117 to within the digital image 402. Either before or after suchmovements, the bounding rectangle 307 may be resized (e.g., reduced) toobtain a smaller bounding rectangle 408. The cursor control element 308may similarly be resized (reduced) to obtain a cursor control element406.

As shown, the cursor control element 406 may thus be moved to anydesired location with the digital image 402. As also shown, the resultof such movements and associated indication of the paste request handler148 may result in pasting of a pasted image object at the illustrateddestination location within the digital image 402.

In FIG. 4, the slider bar 310 continues to represent a rendered size ofthe cursor control element, bounding rectangle 408, and/or the preview404. Specifically, as shown, a selectable indicator 412 is illustratedas being further to the left as compared to the indicator 312 of FIG. 3,thereby indicating a correspondingly smaller size of the preview 404, ascompared to the preview 306.

In the examples of the flowcharts 500 and 600 of FIGS. 5 and 6,respectively, it is assumed for the sake of example that the application108 represents the well-known digital image editing software known asPhotoshop, produced by Adobe Systems Incorporated. Further in theexamples, the user input device 118 may be referred to as a computermouse, performing, e.g., associated click-based selection techniques.Further, the cursor control element (e.g., the cursor control element124 of FIG. 1, or the cursor control elements 308/406 of FIGS. 3 and 4)may be referenced as a “brush cursor.” As is known, such a brush cursormay refer to a circular cursor used to, e.g., sample and paint selectedimage portions, such as may occur in conjunction with the clone stamptool of Adobe Photoshop.

In more detail, FIG. 5 illustrates operations associated withidentifying a most prominent object within a specified digital image,based on a selected source point. Thus, in FIG. 5, a mouse click may becaptured to identify such a source point (502). For example, such amouse click associated with invocation of the cursor 304 at a center ofthe soccer ball 302 in FIG. 3 may be captured. In this regard, it willbe appreciated that such source point identification may be provided inconjunction with operations of the copy request handler 142, as well asthe cursor event handler 146.

Based on the selected source point, the object extractor 136 may beinvoked to identify the bounding rectangle 307 containing the identifiedsource point (504). Parameters for the bounding rectangle 307 may thusbe calculated (506). For example, a width W and a height H of thebounding rectangle 307 may be determined and expressed in pixels.

An extraction functionality of the object extractor 136, such as anexisting auto selection algorithm included with the Photoshop digitalimage editing software may be used, to thereby extract thethus-identified image object 302, which may be stored using theclipboard 138 (508). Further, the bounding rectangle 307 may thus beused to automatically set a radius of a corresponding brush cursor,which may then be shown to the user (510).

For example, the bounding rectangle 307 may be used to set and renderthe cursor control element 308 as a circular brush cursor. For example,a radius of such a circular cursor, on which the rendered preview may beshown as an overlay, may be defined as Max (W, H)/2.

FIG. 6 is a flowchart 600 illustrating example operations associatedwith resizing the image object extracted in FIG. 5, based on acorresponding size of the brush cursor represented by the cursor controlelement 308 of FIG. 3. In FIG. 6, the extracted object is initiallyrendered as a corresponding preview within the brush cursor (602). Forexample, the preview 306 is rendered within the brush cursor 308.

As described above, the cursor event handler 146 waits to detect anycursor size change event (604). That is, as long as no such cursor sizechange event happens, the cursor event handler 146 will simply remain inan active wait mode.

On the other hand, if the cursor size changes, then the cursor eventhandler 146 may proceed to find a corresponding bounding rectangle ofsufficient size to enclose the resized image object (606). For example,with respect to FIGS. 3 and 4, if the brush cursor 308 is reduced insize to obtain the smaller brush cursor 406, then the bounding rectangle307 will be replaced with the bounding rectangle 408. In specificimplementations, in response to a cursor size change, a new rectanglecapable of enclosing the object may be defined, e.g., as the largestrectangle that can be drawn inside the circular cursor. For example, thecursor size may be reduced by fifty percent, such as from 100 pixels to50, or may be increased by fifty percent, such as from 100 to 150pixels.

Parameters for the thus-obtained bounding rectangle 408 may thus beobtained (608). For example, the new rectangle height for the boundingrectangle 408 may be designated as H′, with a corresponding new width ofW′ (e.g., H′/2 and W′/2 in the example of a fifty percent reduction, or1.5H′ and 1.5 W′ in the example of a fifty percent increase).

The cursor event handler 146 may then pass the dimensions H, W of thebounding rectangle 307 and the updated rectangle parameters H′, W′ tothe resizing algorithm 140 (610). The object pixels of the image objectwithin the preview 306 may thus be obtained from the resizing algorithm140, and the resized image object may be shown within the updatedpreview 404, as shown in FIG. 4 (612). Accordingly, a resized objectthat is fifty percent smaller or larger may be rendered, and ultimatelypasted at a desired destination location, as described and illustratedherein.

Thus, in various implementations, the described systems and methodsdemonstrate techniques for showing an image object (or portion thereof)inside a brush cursor, e.g., after setting the source point for theimage object in a single click. Further, the described techniquesprovide methods to resize a preview of an image object, by controllingthe size of the cursor. Still further, the described techniques providemethods to copy, preview, resize, and paste an image object, in amaximum of two clicks, from a source location to a destination location.

Implementations of the various techniques described herein may beimplemented in digital electronic circuitry, or in computer hardware,firmware, software, or in combinations of them. Implementations may beimplemented as a computer program product, i.e., a computer programtangibly embodied in an information carrier, e.g., in a machine-readablestorage device, for execution by, or to control the operation of, dataprocessing apparatus, e.g., a programmable processor, a computer, ormultiple computers. A computer program, such as the computer program(s)described above, can be written in any form of programming language,including compiled or interpreted languages, and can be deployed in anyform, including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment. Acomputer program can be deployed to be executed on one computer or onmultiple computers at one site or distributed across multiple sites andinterconnected by a communication network.

Method steps may be performed by one or more programmable processorsexecuting a computer program to perform functions by operating on inputdata and generating output. Method steps also may be performed by, andan apparatus may be implemented as, special purpose logic circuitry,e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. Elements of a computer may include atleast one processor for executing instructions and one or more memorydevices for storing instructions and data. Generally, a computer alsomay include, or be operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. Informationcarriers suitable for embodying computer program instructions and datainclude all forms of non-volatile memory, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor andthe memory may be supplemented by, or incorporated in special purposelogic circuitry.

To provide for interaction with a user, implementations may beimplemented on a computer having a display device, e.g., a cathode raytube (CRT) or liquid crystal display (LCD) monitor, for displayinginformation to the user and a keyboard and a pointing device, e.g., amouse or a trackball, by which the user can provide input to thecomputer. Other kinds of devices can be used to provide for interactionwith a user as well; for example, feedback provided to the user can beany form of sensory feedback, e.g., visual feedback, auditory feedback,or tactile feedback; and input from the user can be received in anyform, including acoustic, speech, or tactile input.

Implementations may be implemented in a computing system that includes aback-end component, e.g., as a data server, or that includes amiddleware component, e.g., an application server, or that includes afront-end component, e.g., a client computer having a graphical userinterface or a Web browser through which a user can interact with animplementation, or any combination of such back-end, middleware, orfront-end components. Components may be interconnected by any form ormedium of digital data communication, e.g., a communication network.Examples of communication networks include a local area network (LAN)and a wide area network (WAN), e.g., the Internet.

While certain features of the described implementations have beenillustrated as described herein, many modifications, substitutions,changes and equivalents will now occur to those skilled in the art. Itis, therefore, to be understood that the appended claims are intended tocover all such modifications and changes as fall within the scope of theembodiments.

What is claimed is:
 1. A computer program product, the computer programproduct being tangibly embodied on a non-transitory computer-readablestorage medium and comprising instructions that, when executed by atleast one computing device, are configured to cause the at least onecomputing device to: receive a request to copy an image portion of adigital image rendered in a graphical user interface, the copied imageportion having a first image portion size; render a preview of thecopied image portion in conjunction with at least one cursor controlelement of a cursor; move the preview, in response to a movement of thecursor, to a destination location; re-size the preview, in response to asize change event of the at least one cursor control element, to obtaina re-sized preview; and paste the copied image portion at thedestination location as a pasted image portion, and having a secondimage portion size determined from the re-sized preview.
 2. The computerprogram product of claim 1, wherein the instructions, when executed toreceive the request to copy the image portion, are further configured tocause the at least one computing device to: extract an image object fromthe digital image as the copied image portion.
 3. The computer programproduct of claim 1, wherein the instructions, when executed to receivethe request to copy the image portion, are further configured to causethe at least one computing device to: receive an identification of asource location of the image portion within the digital image, based ona location indication received from the cursor.
 4. The computer programproduct of claim 1, wherein the instructions, when executed to renderthe preview, are further configured to cause the at least one computingdevice to: render the preview within an area defined by the at least onecursor control element.
 5. The computer program product of claim 1,wherein the instructions, when executed to re-size the preview, arefurther configured to cause the at least one computing device to: reduceor enlarge the preview in response to a corresponding reduction orenlargement of the at least one cursor control element during the sizechange event thereof.
 6. The computer program product of claim 1,wherein the at least one cursor control element includes the cursor, andfurther wherein the preview is inside an area defined by the cursorwithin the graphical user interface.
 7. The computer program product ofclaim 1, wherein the destination location is included within a seconddigital image.
 8. The computer program product of claim 1, wherein theat least one curser control element includes a size selection elementconfigured to receive the size change event.
 9. The computer programproduct of claim 1, wherein the preview is rendered with a preview sizedefined with respect to a bounding rectangle enclosing the previewimage, and further wherein the preview is re-sized in conjunction withchanging dimensions of the bounding rectangle.
 10. The computer programproduct of claim 1, wherein the instructions, when executed to re-sizethe preview, are further configured to cause the at least one computingdevice to: provide preview parameters characterizing the preview to aresizing algorithm; and re-size the preview, based on the output of theresizing algorithm.
 11. The computer program product of claim 1, whereinthe at least one cursor control element includes a circular brushcursor, and further wherein the preview is rendered inside the circularbrush cursor.
 12. The computer program product of claim 1, wherein aposition of the cursor within the graphical user interface defines thedestination location.
 13. A computer-implemented method, the methodcomprising: copying an image portion of a digital image rendered in agraphical user interface, the copied image portion having a first imageportion size; rendering a preview of the copied image portion inconjunction with at least one cursor control element of a cursor; movingthe preview to a destination location specified by the cursor; re-sizingthe preview, in response to a size change event of the at least onecursor control element, to obtain a re-sized preview; and pasting thecopied image portion at the destination location as a pasted imageportion, and having a second image portion size determined from there-sized preview.
 14. The computer-implemented method as in claim 13,wherein the preview is rendered at a source location defined withrespect to a location of the image portion within the digital image. 15.The computer-implemented method as in claim 13, wherein the cursordefines an area within the graphical user interface, and the renderingof the preview includes rendering the preview within the area.
 16. Thecomputer-implemented method as in claim 13, wherein the at least onecurser control element includes a size selection element configured toreceive the size change event.
 17. A computer program product, thecomputer program product being tangibly embodied on a non-transitorycomputer-readable storage medium and comprising instructions that, whenexecuted by at least one computing device, are configured to cause theat least one computing device to: copy an image portion of a digitalimage; generate a preview of the copied image portion that is overlaidon the digital image and included within at least one cursor controlelement; receive a size change request for the preview; change a size ofthe preview, based on the size change request, to thereby obtain are-sized preview; move the at least one cursor control element to adestination location; paste the copied image portion at the destinationlocation with a size determined from the re-sized preview.
 18. Thecomputer program product of claim 17, wherein the instructions, whenexecuted to receive the size change request, are further configured tocause the at least one computing device to: receive the size changerequest in conjunction with a corresponding size change event of the atleast one cursor control element.
 19. The computer program product ofclaim 17, wherein the instructions, when executed to copy the imageportion, are further configured to cause the at least one computingdevice to: extract an image object from the digital image as the copiedimage portion.
 20. The computer program product of claim 17, wherein theat least one curser control element includes a size selection elementconfigured to receive the size change request.